const Gettext = imports.gettext;
const Package = imports.package;
-const { Gdk, GLib, Gio, GObject, Gtk } = imports.gi;
+const { Gdk, GLib, Gio, GObject, Gtk, Shew } = imports.gi;
Package.initFormat();
const GnomeShellIface = loadInterfaceXML('org.gnome.Shell.Extensions');
const GnomeShellProxy = Gio.DBusProxy.makeProxyWrapper(GnomeShellIface);
+Gio._promisify(Shew.WindowExporter.prototype, 'export', 'export_finish');
+
function loadInterfaceXML(iface) {
const uri = 'resource:///org/gnome/Extensions/dbus-interfaces/%s.xml'.format(iface);
const f = Gio.File.new_for_uri(uri);
this._updatesCheckId = 0;
+ this._exporter = new Shew.WindowExporter({ window: this });
+ this._exportedHandle = '';
+
this._mainBox.set_focus_vadjustment(this._scrolledWindow.vadjustment);
let action;
dialog.present();
}
- openPrefs(uuid) {
+ async openPrefs(uuid) {
+ if (!this._exportedHandle) {
+ try {
+ this._exportedHandle = await this._exporter.export();
+ } catch (e) {
+ log('Failed to export window: %s'.format(e.message));
+ }
+ }
+
this._shellProxy.OpenExtensionPrefsRemote(uuid,
- '',
+ this._exportedHandle,
{ modal: new GLib.Variant('b', true) });
}